// pages/jiaofei/shenghuojiaofei/shuifei/shuifei.js
const userApi = require('../../../../utils/user'); // 引入用户API工具
const request = require('../../../../utils/request'); // 引入封装好的请求工具
Page({

  /**
   * 页面的初始数据
   */
  data: {
    // 页面状态控制
    currentPage: 1, // 1: 金额选择页, 2: 确认信息页, 3: 支付页

    // 用户信息对象，用于存储登录用户的所有数据
    userInfo: {
      nickName: '', // 用户昵称
      userName: '', // 用户姓名
      phonenumber: '', // 手机号
      avatar: '', // 头像
      balance: '0.00', // 账户余额
      userId: '', // 用户ID
    },

    // 住户信息对象，存储用户的住户相关信息
    resident: {},

    // 用户信息 (后期可通过API获取)
    address: '', // 房屋地址

    balance: "0.00", // 可用余额
    company: "花园宝宝公司", // 缴费单位

    // 金额选择
    selectedAmount: 0, // 选中的金额选项
    customAmount: "", // 自定义金额
    finalAmount: 0, // 最终确认的金额
  },

  /**
   * 选择预设金额
   */
  selectAmount: function(e) {
    const amount = parseInt(e.currentTarget.dataset.amount);
    this.setData({
      selectedAmount: amount,
      customAmount: "", // 清空自定义金额
      finalAmount: amount
    });
  },

  /**
   * 输入自定义金额
   */
  inputAmount: function(e) {
    const value = e.detail.value;
    this.setData({
      customAmount: value,
      selectedAmount: 0, // 清空预设金额选择
      finalAmount: value
    });
  },

  /**
   * 前往确认页
   */
  goToConfirm: function() {
    // 获取最终金额（预设金额或自定义金额）
    let amount = this.data.selectedAmount;
    if (this.data.customAmount) {
      amount = parseFloat(this.data.customAmount);
    }

    // 验证金额
    if (!amount || amount <= 0) {
      wx.showToast({
        title: '请输入有效金额',
        icon: 'none'
      });
      return;
    }

    // 设置最终金额并切换页面
    this.setData({
      finalAmount: amount,
      currentPage: 2
    });
  },

  /**
   * 前往支付页
   */
  goToPayment: function() {
    this.setData({
      currentPage: 3
    });
  },

  /**
   * 返回上一页
   */
  goBack: function() {
    const currentPage = this.data.currentPage;
    if (currentPage > 1) {
      this.setData({
        currentPage: currentPage - 1
      });
    } else {
      // 如果是第一页，则返回上一级页面
      wx.navigateBack({
        delta: 1
      });
    }
  },

  /**
   * 生成订单号
   * 格式：SF + 时间戳 + 4位随机数
   */
  generateOrderNo: function() {
    const timestamp = new Date().getTime();
    const random = Math.floor(Math.random() * 10000).toString().padStart(4, '0');
    return `SF${timestamp}${random}`;
  },

  /**
   * 处理支付
   */
  handlePayment: function() {
    // 显示加载提示
    wx.showLoading({
      title: '支付处理中',
    });

    // 获取当前用户和住户信息
    const residentId = this.data.resident.id;
    const houseId = this.data.resident.houseId;
    const amount = this.data.finalAmount;
    // 时间格式建议用当前时间（含时分秒）
    const now = new Date();
    const year = now.getFullYear();
    const month = (now.getMonth() + 1).toString().padStart(2, '0');
    const day = now.getDate().toString().padStart(2, '0');
    const hour = now.getHours().toString().padStart(2, '0');
    const minute = now.getMinutes().toString().padStart(2, '0');
    const second = now.getSeconds().toString().padStart(2, '0');
    const currentDate = `${year}-${month}-${day} ${hour}:${minute}:${second}`;
    const orderNumber = this.generateOrderNo();

    // 构建支付记录数据，字段名与后端保持一致
    const paymentData = {
      orderNumber: orderNumber,//订单号
      residentId: residentId,//住户id
      houseId: houseId,//户号
      paymentMethod: 0, // 示例：微信支付
      paymentTime: currentDate,//支付时间
      paymentAmount: amount,
      paymentStatus: 0,
      createTime: currentDate // 只保留年月日，时分秒为00:00:00
      // reservedField1, reservedField2, reservedField3 可根据需要添加
    };

    // 调用API创建支付记录
    request.post('/shuidianqi/chongzhijilu', paymentData)
      .then(res => {
        wx.hideLoading();
        if (res.code === 200) {
          wx.showToast({
            title: '支付成功',
            icon: 'success',
            duration: 2000,
            success: () => {
              // 支付成功后，跳回第一个页面
              setTimeout(() => {
                this.setData({
                  currentPage: 1,
                  selectedAmount: 0,
                  customAmount: "",
                  finalAmount: 0
                });
                // 重新获取用户信息（余额可能已更新）
                this.getUserInfo();
              }, 2000);
            }
          });
        } else {
          wx.showToast({
            title: res.msg || '支付失败',
            icon: 'none'
          });
        }
      })
      .catch(error => {
        wx.hideLoading();
        console.error('创建支付记录失败:', error);
        wx.showToast({
          title: '支付失败，请稍后重试',
          icon: 'none'
        });
      });
  },
 /**
   * 获取住户信息
   */
 getResidentInfo() {
  console.log('住户id',this.data.userInfo.resident.id);
  
//调用接口获取住户信息
request.get('/property/resident/' + this.data.userInfo.resident.id)
  .then(res => {
    console.log('获取住户信息成功:', res.data);
    this.setData({
      resident: res.data
    });
  })
  .catch(error => {
    console.error('获取住户信息失败:', error);
  });

},
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    // 可以从options中获取传递的参数
    // 例如户号、地址等信息

    // 示例：如果有传递户号参数
    if (options.huhao) {
      this.setData({
        huhao: options.huhao
      });
    }

    // 提示开发者检查服务器地址
    console.log('提示：请确保utils/request.js中的BASE_URL配置正确');
    console.log('当前BASE_URL设置为localhost，如果在真机上测试可能无法连接');

    // 实际开发中，这里可以调用API获取用户信息、账户余额等
    this.getUserInfo();
    this.getResidentInfo();
    console.log('当前用户信息',this.data.userInfo);
    console.log('当前住户信息',this.data.resident);
  },

  /**
   * 获取用户信息（从本地存储和API获取）
   * 包括用户基本信息和住户信息
   */
  getUserInfo: function() {
    // 显示加载提示
    wx.showLoading({
      title: '加载中',
    });

    // 1. 首先尝试从本地存储获取用户信息
    const localUserInfo = wx.getStorageSync('userInfo');

    if (localUserInfo) {
      // 如果本地有缓存的用户信息，直接使用
      console.log('从本地缓存获取用户信息:', localUserInfo);
      
      // 获取本地存储的resident信息
      const localResident = localUserInfo.resident || {};
      
      // 更新页面数据
      this.setData({
        userInfo: localUserInfo,
        userName: localUserInfo.nickName || localUserInfo.userName || '用户',
        phone: localUserInfo.phonenumber || '未绑定手机号',
        balance: localUserInfo.balance || '0.00',
        userId: localUserInfo.userId || '',
        // 设置住户信息
        resident: localResident
      });
      
      // 如果住户信息中有地址，则更新地址字段
      if (localResident && localResident.address) {
        this.setData({
          address: localResident.address
        });
        console.log('已从本地获取住户地址:', localResident.address);
      }
      
      console.log('已从本地获取住户信息:', localResident);
      wx.hideLoading();

      // 如果没有住户信息，仍然尝试从API获取最新信息
      if (!localResident || Object.keys(localResident).length === 0) {
        console.log('本地没有住户信息或信息不完整，继续获取API数据');
      } else {
        // 可以选择在这里返回，不再请求API
        return;
      }
    }

    // 2. 然后尝试从API获取最新的用户信息
    // 调用API获取用户个人信息
    userApi.getUserProfile()
      .then(res => {
        wx.hideLoading();
        if (res.code === 200) {
          // 获取成功，更新用户数据
          const userData = res.data || {};
          
          // 保留原有的resident信息（如果有）
          const localUserInfo = wx.getStorageSync('userInfo') || {};
          if (localUserInfo.resident) {
            userData.resident = localUserInfo.resident;
          }

          // 更新本地存储
          wx.setStorageSync('userInfo', userData);

          // 更新页面数据
          this.setData({
            userInfo: userData,
            userName: userData.nickName || userData.userName || '用户',
            phone: userData.phonenumber || '未绑定手机号',
            balance: userData.balance || '0.00',
            userId: userData.userId || ''
          });

          console.log('从API获取用户信息成功:', userData);

          // 如果没有住户信息，尝试获取
          if (!userData.resident || Object.keys(userData.resident).length === 0) {
            this.getResidentInfo();
          }

          // 获取用户账户信息（如果有单独的API）
          this.getUserAccount();
        } else {
          wx.showToast({
            title: '获取用户信息失败',
            icon: 'none'
          });
        }
      })
      .catch(error => {
        wx.hideLoading();
        console.error('获取用户信息失败:', error);
        wx.showToast({
          title: '获取用户信息失败',
          icon: 'none'
        });
      });
  },

  /**
   * 获取用户账户信息（如余额等）
   */
  getUserAccount: function() {
    // 这里可以添加获取用户账户余额的逻辑
  },
  
  /**
   * 获取住户信息
   * 该函数通过调用后端接口获取指定userId的住户详细信息
   * 接口路径: /userId/{userId}
   * 请求方式: GET
   */
  // getResidentInfo: function() {
  //   // 获取当前用户ID
  //   const userId = this.data.userInfo.userId;
    
  //   // 判断userId是否存在
  //   if (!userId) {
  //     console.error('用户ID不存在，无法获取住户信息');
  //     return;
  //   }
    
  //   // 显示加载提示
  //   wx.showLoading({
  //     title: '加载住户信息',
  //   });
    
  //   // 使用封装好的request工具发起请求
  //   const request = require('../../../../utils/request');
  //   request.get(`/property/resident/userId/${userId}`)
  //     .then(response => {
  //       // 请求成功后隐藏加载提示
  //       wx.hideLoading();
        
  //       console.log('获取住户信息成功:', response);
        
  //       // 判断接口返回状态码
  //       if (response.code === 200) {
  //         const residentData = response.data;
          
  //         // 将接口返回的数据保存到页面的resident数据中
  //         this.setData({
  //           resident: residentData
  //         });
          
  //         // 处理获取到的住户信息
  //         if (residentData) {
  //           // 更新页面上的地址等信息
  //           if (residentData.address) {
  //             this.setData({
  //               address: residentData.address
  //             });
  //           }
            
  //           // 更新本地存储中的userInfo，添加resident信息
  //           try {
  //             const localUserInfo = wx.getStorageSync('userInfo') || {};
  //             localUserInfo.resident = residentData;
  //             wx.setStorageSync('userInfo', localUserInfo);
  //             console.log('已将住户信息保存到本地存储:', residentData);
  //           } catch (error) {
  //             console.error('保存住户信息到本地存储失败:', error);
  //           }
  //         }
  //       } else {
  //         // 处理业务逻辑错误
  //         console.warn('获取住户信息失败:', response.msg);
  //         wx.showToast({
  //           title: response.msg || '获取住户信息失败',
  //           icon: 'none'
  //         });
  //       }
  //     })
  //     .catch(error => {
  //       // 处理网络错误或其他异常
  //       wx.hideLoading();
  //       console.error('获取住户信息异常:', error);
  //       wx.showToast({
  //         title: '网络异常，请稍后重试',
  //         icon: 'none'
  //       });
  //     });
  // },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {
    return {
      title: '水费缴纳',
      path: '/pages/jiaofei/shenghuojiaofei/shuifei/shuifei'
    }
  },

  /**
   * 监听物理返回按钮
   */
  onBackPress: function() {
    // 如果不是第一页，返回上一页面状态
    if (this.data.currentPage > 1) {
      this.goBack();
      return true; // 阻止默认的返回行为
    }
    return false; // 使用默认的返回行为
  }
})